1写在前面
最近真是累的不行,今天抽空写一下新的教程,关于人人都会做的GSEA
(Gene Set Enrichment Analysis
)。
但有时候我们做完GSEA
后结果实在太多,无法确定其中重要的生物学意义,难以解释。🤨
本期我们介绍一下GSEAmining
包,对我们的GSEA
结果做一个瘦身吧,基本原理是:👇
1️⃣ 对参与类似生物过程的基因集应该有共同的基因
。
2️⃣ 对拥有一定数量的共同基因
的相似基因集进行功能聚类。
2用到的包
rm(list = ls())
# if (!requireNamespace("BiocManager", quietly = TRUE))
# install.packages("BiocManager")
#
# BiocManager::install("GSEAmining")
library(dplyr)
library(GSEAmining)
library(clusterProfiler)
library(msigdbr)
library(org.Hs.eg.db)
3示例数据
这里我们从DOSE
包里提取一些基因,作为我们的genelist
,假装是我们的输入数据。😙
data(geneList, package="DOSE")
gene <- names(geneList)[abs(geneList) > 2]
# Entrez gene ID
head(gene)
4整理gmt
这里我们用msigdbr
包提取一下hallmark
&#xff0c;GO
和KEGG
的基因集。&#x1f912;
再也不用去下载gmt
文件了&#xff0c;真香&#xff01;~&#x1f602;
h_t2g <- msigdbr(species &#61; "Homo sapiens", category &#61; "H") %>%
dplyr::select(gs_name, entrez_gene)
C2_t2g <- msigdbr(species &#61; "Homo sapiens", category &#61; "C2", subcategory &#61; "CP:KEGG") %>%
dplyr::select(gs_name, entrez_gene)
C5_t2g <- msigdbr(species &#61; "Homo sapiens", category &#61; "C5") %>%
dplyr::select(gs_name, entrez_gene)
all_t2g <- rbind(h_t2g, C2_t2g, C5_t2g)
head(all_t2g)
5GSEA分析
5.1 开始GSEA
GSEA.res <- GSEA(geneList, TERM2GENE &#61; all_t2g, pvalueCutoff &#61; 0.1, eps &#61; 0)
5.2 将ID转为SYMBOL
GSEA.res <- setReadable(GSEA.res, keyType &#61; "ENTREZID", OrgDb &#61; "org.Hs.eg.db")
dat <- GSEA.res&#64;result
5.3 过滤一下
这里我们设个阈值&#xff0c;过滤一下&#xff0c;实在是太多了。&#x1f602;
gs.filt <- gm_filter(dat,
p.adj &#61; 0.05,
neg_NES &#61; 2.5,
pos_NES &#61; 2.5)
6聚类
6.1 开始聚类
这里我们进行一下hierarchical clustering
&#xff0c;对富集结果进行一下瘦身。&#x1f928;
补充一下&#xff0c;这一步是基于core_enrichment
的。&#x1f637;
gs.cl <- gm_clust(gs.filt)
gs.cl
6.2 初步可视化
画个cluster dendrogram
吧&#xff0c; 红色
➡️ positive
, 蓝色
➡️ negative
。&#x1f619;
gm_dendplot(gs.filt,
gs.cl)
6.3 改个颜色
gm_dendplot(gs.filt,
gs.cl,
col_pos &#61; &#39;orange&#39;,
col_neg &#61; &#39;black&#39;,
rect &#61; T,
dend_len &#61; 20,
rect_len &#61; 1)
7分组评估富集结果
这里我们按cluster
对各个cluster
进行一下深入分析&#xff0c;看看那个term
才是最重要的。&#x1f929;
7.1 分组分析
这里我们有4
个cluster
&#xff0c;看看都是什么term
吧。&#x1f601;
我们用词云的方式展示下结果&#xff0c;越大越有意义。&#x1f9d0;
gm_enrichterms(gs.filt, gs.cl)
7.2 不分组分析
当然你也可以不按cluster
分析&#xff0c;全部都放在一起。&#x1f602;
gm_enrichterms(gs.filt,
gs.cl,
clust &#61; F,
col_pos &#61; &#39;chocolate3&#39;,
col_neg &#61; &#39;skyblue3&#39;)
8分组评估具体基因
对于找到的有意义的基因集&#xff0c;我们也可以看下哪个基因对其贡献最大&#xff0c;在其中起到最重要的作用。&#x1f60f;
gm_enrichcores(gs.filt, gs.cl,
col_pos &#61; &#39;chocolate3&#39;,
col_neg &#61; &#39;skyblue3&#39;)
9如何引用
&#x1f4cd;
Arqués O (2022). GSEAmining: Make Biological Sense of Gene Set Enrichment Analysis Outputs. R package version 1.8.0.
最后祝大家早日不卷!~
点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰
&#x1f4cd; 往期精彩
&#x1f4cd; &#x1f929; WGCNA | 值得你深入学习的生信分析方法&#xff01;~
&#x1f4cd; &#x1f929; ComplexHeatmap | 颜狗写的高颜值热图代码&#xff01;
&#x1f4cd; &#x1f925; ComplexHeatmap | 你的热图注释还挤在一起看不清吗&#xff01;&#xff1f;
&#x1f4cd; &#x1f928; Google | 谷歌翻译崩了我们怎么办&#xff01;&#xff1f;&#xff08;附完美解决方案&#xff09;
&#x1f4cd; &#x1f929; scRNA-seq | 吐血整理的单细胞入门教程
&#x1f4cd; &#x1f923; NetworkD3 | 让我们一起画个动态的桑基图吧~
&#x1f4cd; &#x1f929; RColorBrewer | 再多的配色也能轻松搞定&#xff01;~
&#x1f4cd; &#x1f9d0; rms | 批量完成你的线性回归
&#x1f4cd; &#x1f929; CMplot | 完美复刻Nature上的曼哈顿图
&#x1f4cd; &#x1f920; Network | 高颜值动态网络可视化工具
&#x1f4cd; &#x1f917; boxjitter | 完美复刻Nature上的高颜值统计图
&#x1f4cd; &#x1f92b; linkET | 完美解决ggcor安装失败方案&#xff08;附教程&#xff09;
&#x1f4cd; ......